Conventional methods and systems for performing multiple or complex tasks include those characterized as “clustered computing” and “distributed computing[.]” Clustered computing typically involves a program host for storing various programs that define certain tasks or computations, multiple computing engines for performing the various tasks or computations, and a queue manager for assigning the various tasks or computations to the computing engines. In operation, the queue manager assigns various tasks or computations to each of the computing engines. The program host then transmits the appropriate programs, together with required inputs, to each of the computing engines. The computing engines download the programs and execute their required tasks or computations.
Similarly, distributed computing typically involves one or more controller programs running on one or more nodes of a computer network. These controller programs control the launch and operation of multiple component programs which are also running on one or more nodes of a computer network. In operation, once a distributed application is composed (i.e., component programs, communication routes between component programs, and computing nodes on which the component programs are to be run are all specified a priori), a controller program disseminates launch commands and routing information which in turn, launches the respective component programs. Once launched, the component programs run continuously and remain connected to the controller program to receive data and further instructions.
As will be appreciated by those of skill in the art, the conventional systems and methods described above each require a central controller entity (e.g., a queue manager or controller program). As a result, these systems are limited by a single point of failure. In other words, if the central controlling entity of the respective systems fails, then the entire system fails. In addition, since the above systems require the transmission and downloading of computer-executable code, the systems are susceptible to viral infection. Notably, none of the conventional systems are able to leverage resources of a peer-to-peer network without requiring a central controller, or without having to transmit and download computer-executable code.
Therefore, it would be desirable to have systems and methods for leveraging a peer-to-peer network in a manner that does not require a central controlling entity, nor the transmission and/or downloading of computer-executable code (e.g., program applications).